home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
pvm34b3.zip
/
pvm34b3
/
pvm3
/
src
/
mppmsg.h
< prev
next >
Wrap
C/C++ Source or Header
|
1997-07-22
|
4KB
|
132 lines
/* $Id: mppmsg.h,v 1.4 1997/07/09 13:52:36 pvmsrc Exp $ */
/*
* PVM version 3.4: Parallel Virtual Machine System
* University of Tennessee, Knoxville TN.
* Oak Ridge National Laboratory, Oak Ridge TN.
* Emory University, Atlanta GA.
* Authors: J. J. Dongarra, G. E. Fagg, M. Fischer
* G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
* P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
* (C) 1997 All Rights Reserved
*
* NOTICE
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted
* provided that the above copyright notice appear in all copies and
* that both the copyright notice and this permission notice appear in
* supporting documentation.
*
* Neither the Institutions (Emory University, Oak Ridge National
* Laboratory, and University of Tennessee) nor the Authors make any
* representations about the suitability of this software for any
* purpose. This software is provided ``as is'' without express or
* implied warranty.
*
* PVM version 3 was funded in part by the U.S. Department of Energy,
* the National Science Foundation and the State of Tennessee.
*/
#ifndef __mppmsg_h__
#define __mppmsg_h__
/* This library uses primitives of a native message passing system. Because
* different routes may use different functions, the following documents
* the call sequence expected.
*
int
imsgsend(int appid, int tag, char *buffer, int len, int dest, int partid,
msgmid_t *mid)
appid - used for some host programs to identify application
dest - destinations of message.
tag - tag to use for sending the message
datap - buffer to send
len - length of buffer (in bytes)
partid -partition id
mid - message id of send message
returns integer >= 0 on success. < 0 on failure.
message id is returned in mid.
int
imsgrecv(int appid, int src, int tag, char *datap, int len, int partid,
int *info, msgmid_t *mid)
appid - used for some host programs to identify application
src - src of message. -1 means any src
tag - tag to match on message
datap - buffer in which to receive message
len - max length of buffer (in bytes)
partid -partition id
info - pointer to integer array of memory to store message information
mid - pointer the recv message id
returns integer >= 0 on success. < 0 on failure.
message id returned in mid
msgmid_t
msgmerge(msgmid_t *mid1, msgmid_t *mid2)
mid1 - message id of message 1 (-1 indicates no existing message )
mid2 - message id of message 2 (-1 indicates no existing message )
returns mid3, merged id of message 1 and 2, if possible
int
msgdone(int appid, msgmid_t mid, info_t *info)
appid - used for some host programs to identify application
mid - message id of an incoming message (imsgrecv) or outgoing (imsgsend)
returns 0, message not complete; 1 - message complete, < 0 error
int
msgsrc(info_t *info)
info - pointer to low-level message passing information block
returns node of the message src
int
msglen(info_t *info)
info - pointer to low-level message passing information block
returns length of the message given in info block
int
msgtag(info_t *info)
info - pointer to low-level message passing information block
returns tag of the message
*/
#if defined(IMA_SP2MPI) && defined(IMA_NODE)
#include <mpi.h>
#define msgmid_t MPI_Request
#define info_t MPI_Status
#define MPPINFOSIZE 1
#else
#define msgmid_t int
#define info_t int
#define MPPINFOSIZE 8
#endif
struct msgfunc {
int (*imsgsend) __ProtoGlarp__( (int, int, char *, int, int, int, msgmid_t *) );
int (*imsgrecv) __ProtoGlarp__( (int, int, int, char *, int, int, int *, msgmid_t *) );
msgmid_t (*msgmerge) __ProtoGlarp__( (msgmid_t *, msgmid_t *) );
int (*msgdone) __ProtoGlarp__( (int, msgmid_t *, info_t *) );
int (*msglen) __ProtoGlarp__( (info_t *) );
int (*msgsrc) __ProtoGlarp__( (info_t *) );
int (*msgtag) __ProtoGlarp__( (info_t *) );
};
typedef struct msgfunc MSGFUNC;
typedef struct msgfunc *MSGFUNC_PTR;
/* ======= Function Protoypes ========= */
MSGFUNC_PTR pvm_nodemsgfunc __ProtoGlarp__(());
MSGFUNC_PTR pvm_hostmsgfunc __ProtoGlarp__(());
int pvm_mpp_message_init __ProtoGlarp__( (int *, int *, int *, int *) );
int pvm_mpp_message_stop __ProtoGlarp__( () );
#endif /* not defined __mppmsg_h */